/*
 * @lc app=leetcode.cn id=350 lang=cpp
 *
 * [350] 两个数组的交集 II
 */

// @lc code=start
class Solution
{
public:
    vector<int> intersect(vector<int> &nums1, vector<int> &nums2)
    {
        //数组交集可以重复
        //首先延续刚才思路如果使用multi_set因为删除元素会删除所有相同元素
        //所以不可行(或者得用自定义) 使用map
        unordered_map<int, int> nums;
        vector<int> res;
        for (int i = 0; i < nums1.size(); i++)
        {
            nums[nums1[i]]++;
        }
        for (int i = 0; i < nums2.size(); i++)
        {
            if (nums[nums2[i]] > 0)
            {
                res.emplace_back(nums2[i]);
                nums[nums2[i]]--;
            }
        }
        return res;
    }
};
// @lc code=end
